package com.xxxx.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created By ShaoXikai on 2022/7/21
 */
@Component
@Aspect
public class OnceAdvice {
    /**
     * //第一种方法
     * //获取00:00:00时的毫秒数
     * String s= DateFormatUtils.format(new Date(), "yyyy-MM-dd 00:00:00");
     * SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义时间格式
     * Date date=sdf.parse(s);//将String字符串类型转换为date时间类型
     * Long zero=date.getTime();//获取date的值
     */

    // 定义切点
    @Pointcut("execution(* com.xxxx.dao.BookDao.*d*(..))")
    private void pt() {
    }

    // @Before("pt()")
    // public void before() {
    //     System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
    //     System.out.println("开始执行！");
    // }
    //
    // @After("pt()")
    // public void after() {
    //     System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
    //     System.out.println("执行完毕！");
    // }


    @Around("pt()")
    public Object ar(ProceedingJoinPoint joinPoint){

        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
        System.out.println("开始执行！");
        try {
            Object proceed = joinPoint.proceed();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
        System.out.println("执行完毕！");
        return joinPoint;

    }

}
